#include <dlfcn.h>
#include <stdio.h>

typedef void (*myfun)(const char* msg);  

int main() {
    // 1. 打开动态库
    void* handle = dlopen("./dll/libMyShared.so", RTLD_LAZY);
    if (!handle) {
        fprintf(stderr, "Error: %s\n", dlerror());
        return 1;
    }

    // 2. 获取函数指针
    myfun func = (myfun)dlsym(handle, "printMessage");
    if (!func) {
        fprintf(stderr, "Error: %s\n", dlerror());
        dlclose(handle);
        return 1;
    }

    // 3. 调用动态库函数
    func("Hello from dynamic library!");

    // 4. 关闭句柄
    dlclose(handle);

    return 0;
}